package com.tao.YanMoDesignPattern.status.notPattern;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author Mi_Tao
 * @Date 2023/7/22
 * @Description 投票管理
 * @Version 1.0
 **/

public class VoteManager {

    // 记录用户投票的结果  用户名称，投票的选择
    private Map<String,String> mapVote = new HashMap<String,String>();

    // 记录用户投票的次数  用户名称，投票的次数
    private Map<String,Integer> mapVoteCount = new HashMap<String,Integer>();

    public Map<String, String> getMapVote() {
        return mapVote;
    }

    public Map<String, Integer> getMapVoteCount() {
        return mapVoteCount;
    }

    /**
     * 投票
     *
     * @param user     用户
     * @param voteItem 投票项
     */
    public void vote(String user,String voteItem){
        //1、 先为该用户增加投票的次数
        // 从记录中取出已有的投票次数
        Integer oldVotCount = mapVoteCount.get(user);
        if (oldVotCount == null){
            oldVotCount = 0;
        }
        oldVotCount += 1;
        mapVoteCount.put(user,oldVotCount);

        // 2、判断该用户的类型，到底是正常投票，重复投票还是恶意投票
        // 还是上黑名单，然后根据投票类型来进行 相应的操作
        if (oldVotCount == 1){
            // 正常投票，记录到投票记录中
            mapVote.put(user,voteItem);
            System.out.println("恭喜你投票成功！");
        }
        else if (oldVotCount > 1 && oldVotCount < 5){
            // 重复投票，暂不做处理
            System.out.println("请不要重复投票");
        }else if (oldVotCount > 5 && oldVotCount < 8){
            //恶意投票 取消用户的投票资格，并取消投票记录
            String s = mapVote.get(user);
            if (s != null){
                mapVote.remove(user);
            }
            System.out.println("你有恶意刷票行为，取消投票资格！");
        } else if (oldVotCount > 8) {
            // 黑名单
            System.out.println("进入黑名单，将禁止登陆和适用本系统");
        }

    }
}
